tg-me.com/oracle_dbd/900
Last Update:
Решение технической задачи
Друзья, всем привет! 👋🏻
В понедельник мы выкладывали техническую задачу по оптимизации. Скажу по секрету, такие задачи задают на собеседовании в одном из крупных ритейлеров.
Итак, если посмотреть на план запроса, видно, что узкое место в том, что мы выгребаем из индекса 4 млн. записей, хотя архивная копия по размеру будет очень близка к исходной таблице (разница всего в 2 недели).
Какие можно дать рекомендации
1️⃣ Сбор статистики
Смотрим на статистику таблицы sales
SELECT stale_stats FROM user_tab_statistics WHERE table_name = 'SALES'
Если запрос вернет
YES
или <NULL>
- статистика неактуальна, делаемDBMS_STATS.GATHER_TABLE_STATS(OWNNAME => USER, TABNAME => 'SALES');
2️⃣ Управление индексом
Если статистика актуальна, а оптимизатор все равно считает, что нужен индекс, следует выполнить
ALTER INDEX SALES_IDX INVISIBLE
.3️⃣ SQL Plan Management
Минус подхода с
SQL Plan Management
в том, что если вендор доработает запрос, наша «магия» с подменой плана исчезнет :( Но часто он помогает устранить "острую боль", когда нет возможности оперативно выпустить патч или исправить тормозящий запрос. Про этот подход мы более подробно рассказываем на нашем курсе по оптимизации. Там же есть куча вопросов с собеседований и тестовых заданий. Так что если вы хотите к ним лучше подготовиться - welcomeСтавь лайк, если ответил верно. Делитесь в комментариях, у кого еще
Index Range Scan
тормозил прод.#oracle #оптимизация #задача #оптимизация #performance #Pavel_Dolganov
Канал Oracle Developer | Чатик
Мини-курс Оптимизация: Быстрый старт 🚀